package com.reactnativedlnaplayer;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;

/**
 * 用于检测应用是否在 Expo 环境中运行
 */
public class ExpoDetection {

    /**
     * 检查应用是否在 Expo 环境中运行
     * @param context 应用上下文
     * @return 如果在 Expo 环境中运行则返回 true
     */
    public static boolean isRunningInExpo(Context context) {
        try {
            // 检查是否存在 Expo SDK
            PackageManager pm = context.getPackageManager();
            ApplicationInfo appInfo = context.getApplicationInfo();
            
            // 检查元数据
            boolean hasExpoMetadata = appInfo.metaData != null && 
                appInfo.metaData.containsKey("expo.modules.updates.EXPO_SDK_VERSION");
                
            // 检查类路径
            boolean hasExpoClasses = false;
            try {
                Class.forName("expo.modules.ExpoModulesPackage");
                hasExpoClasses = true;
            } catch (ClassNotFoundException e) {
                // Expo 类不存在
            }
            
            return hasExpoMetadata || hasExpoClasses;
        } catch (Exception e) {
            return false;
        }
    }
    
    /**
     * 获取 Expo SDK 版本（如果可用）
     * @param context 应用上下文
     * @return Expo SDK 版本或 null
     */
    public static String getExpoSdkVersion(Context context) {
        try {
            ApplicationInfo appInfo = context.getApplicationInfo();
            if (appInfo.metaData != null && 
                appInfo.metaData.containsKey("expo.modules.updates.EXPO_SDK_VERSION")) {
                return appInfo.metaData.getString("expo.modules.updates.EXPO_SDK_VERSION");
            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }
} 